Application rating and feedback

ABSTRACT

A method includes identifying a first application for which a feedback of a user of a user device is desired. The method further includes identifying previous user interactions with one or more second applications. The previous user interactions comprise one or more positive interactions comprising at least one of: providing corresponding feedback that meets a threshold rating via a corresponding prompt to rate the one or more second applications; sharing at least one of the one or more second applications with one or more users via the corresponding prompt; or a rating for the one or more second applications that does not meet the threshold rating and that has an accompanying comment. The method further includes, responsive to a quantity of positive interactions satisfying a threshold condition, causing the user device to display, to the user, a prompt for the feedback for the first application.

RELATED APPLICATIONS

This application is a continuation application of U.S. patentapplication Ser. No. 16/607,690, filed Oct. 23, 2019, which claims thebenefit under 35 U.S.C. § 371 of International Patent Application No.PCT/US2018/027151, filed Apr. 11, 2018, which claims the benefit ofProvisional Application No. 62/490,446, filed Apr. 26, 2017, which areincorporated by reference in their entirety.

TECHNICAL FIELD

This disclosure relates to the provision of user feedback on anapplication such as a mobile application.

BACKGROUND

A user who acquires an application (or “app”) may be asked to providefeedback on the application to allow the application to be improved, forexample by allowing users to report problems (“bugs”) in theapplication. One known way to obtain feedback is to prompt the user ofan application to rate or share an application. However, sending promptsto users to ask them to rate or share an application or otherwiseprovide feedback on the application can be inefficient, and also may beannoying to users.

SUMMARY

The following is a simplified summary of the disclosure in order toprovide a basic understanding of some aspects of the disclosure. Thissummary is not an extensive overview of the disclosure. It is intendedto neither identify key or critical elements of the disclosure, nordelineate any scope of the particular implementations of the disclosureor any scope of the claims. Its sole purpose is to present some conceptsof the disclosure in a simplified form as a prelude to the more detaileddescription that is presented later.

In an aspect of the disclosure, a method includes identifying a firstapplication for which a feedback of a user of a user device is desired,determining, by a processing device, whether previous user interactionswith one or more second applications indicate that the user isinterested in providing feedback for the one or more secondapplications, and responsive to determining that the previous userinteractions with the one or more second applications indicate that theuser is interested in providing the feedback for the one or more secondapplications, causing the user device to display, to the user, a promptfor the feedback for the first application. If a user does not respondto a prompt, all network resources used in sending the prompt to theuser's device are wasted and this can lead to inefficient use of networkresources (particularly if multiple prompts are sent to one user toprovide feedback about a particular application). By providing promptsonly to users that are likely to respond by providing feedback on amobile applications and/or to users that are likely to share mobileapplications, aspects of the present disclosure have technologicaladvantages of reduced bandwidth, reduced energy consumption (e.g.,battery consumption), and reduced latency.

In one implementation, the prompt for the feedback for the firstapplication is a request to rate or share the first application.

In one implementation, the previous user interactions include one ormore ratings, by the user via one or more prompts, of the one or moresecond applications and the determining that the previous userinteractions indicate that the user is interested in providing thefeedback comprises determining a quantity of the one or more ratingsmeets a threshold quantity.

In one implementation, the previous interactions include a level ofengagement of the user with the first application and the determiningthat the previous user interactions indicate that the user is interestedin providing the feedback comprises determining the level of engagementmeets a threshold level.

In one implementation, the previous user interactions include one ormore ratings, by the user via one or more prompts, of the one or moresecond applications and a level of engagement of the user with the firstapplication and the determining that the previous user interactionsindicate that the user is interested in providing the feedback comprisesgenerating a combined score based on the one or more ratings and thelevel of engagement and determining the combined score meets a thresholdscore.

In one implementation, the previous user interactions include one ormore negative interactions comprising at least one of dismissing acorresponding prompt to rate the one or more second applications, alevel of engagement of the user with the first application does not meeta threshold level, or a rating for the one or more second applicationsdoes not meet a threshold rating and does not have an accompanyingcomment and the determining that the previous user interactions indicatethat the user is interested in providing the feedback comprisesdetermining a quantity of negative interactions does not meet athreshold quantity.

In one implementation, the method further includes receiving userinformation corresponding to a plurality of users comprising the userand clustering, based on the user information, a subset of the pluralityof users comprising the user into a first cluster. The previous userinteractions include a first median positive interaction rate of thefirst cluster and the determining that the previous user interactionsindicate that the user is interested in providing the feedback comprisesdetermining the first median positive interaction rate meets a thresholdrate.

In one implementation, the method further includes determining a levelof impact for displaying the prompt to the user based on the previoususer interactions. The level of impact comprises at least one ofinvasiveness of the prompt, size of the prompt, or location of thedisplaying of the prompt. The causing the user device to display, to theuser, the prompt is based on the level of impact.

In one implementation, the one or more second applications include thefirst application.

In one implementation, the first application is different from any ofthe one or more second applications.

In one implementation all features of the method may be performed by theprocessing device. The processing device may be the processing device ofa user device.

In an aspect of the disclosure, a method includes transmitting, by auser device of a user, previous user interactions of the user with oneor more second applications, receiving, by the user device, instructionsto display a prompt associated with a first application to the userresponsive to the previous user interactions with the one or more secondapplications indicating that the user is interested in providing thefeedback for the one or more second applications, and displaying, by theuser device, the prompt associated with the first application to theuser.

In an aspect of the disclosure, a non-transitory machine-readablestorage medium stores instructions which, when executed cause aprocessing device of a user device to perform operations comprising:identifying a first application for which a feedback of a user of a userdevice is desired; determining, by the processing device, whetherprevious user interactions with one or more second applications indicatethat the user is interested in providing feedback for the one or moresecond applications; and responsive to determining that the previoususer interactions with the one or more second applications indicate thatthe user is interested in providing the feedback for the one or moresecond applications, causing the user device to display, to the user, aprompt for the feedback for the first application.

In an aspect of the disclosure, a system comprises: a memory; and aprocessing device, coupled to the memory, configured to perform a methodaccording to any aspect or implementation described herein. In an aspectof the disclosure, a system comprises: a processor-readable memory; anda processing device, coupled to the memory. The processor-readablememory, which may be a non-transitory memory although this aspect is notlimited to this, stores instructions that, when executed by theprocessing device, cause the processing device to perform a methodaccording to any aspect or implementation described herein.

In an aspect of the disclosure, a processor-readable memory, which maybe a non-transitory memory although this aspect is not limited to this,stores instructions that, when executed by the processing device, causethe processing device to perform a method according to any aspect orimplementation described herein

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings.

FIG. 1 is a block diagram illustrating an exemplary system architecture,in accordance with an implementation of the disclosure.

FIG. 2 is a block diagram illustrating the components and modules of aprompt server, in accordance with an implementation of the disclosure.

FIG. 3 is a flow diagram illustrating an example method of causing aprompt to be displayed to a user based on previous user interactions, inaccordance with an implementation of the disclosure.

FIG. 4 is a flow diagram illustrating an example method of displaying aprompt to a user based on previous user interactions, in accordance withan implementation of the disclosure.

FIG. 5 is an example graphical interface displaying a prompt, inaccordance with an implementation of the disclosure.

FIG. 6 is a block diagram illustrating one implementation of a computersystem, in accordance with an implementation of the disclosure.

DETAILED DESCRIPTION

Aspects and implementations of the disclosure are directed topersonalized interruptive dialogs (e.g., prompts) for rating and sharingof applications (e.g., mobile applications, software applications,etc.). User acquisition (e.g., downloading, purchasing) of anapplication may increase as the application is shared, as the averagerating of the application increases, and as the number of ratings of theapplication increases. The average rating and number of ratings of anapplication may determine where an application appears in relation toother applications in an application distribution platform (e.g., highin a list in an application (app) store, on a trending applications listin an app store, on a top charts list in an app store, on a mostdownloaded list in an app store, etc.). User acquisition of anapplication may increase as the location of the application in theapplication distribution platform improves (e.g., the higher theapplication is on an app-store listing, the lists in which theapplication is located, etc.).

A user may frequently receive prompts to rate applications on anapplication distribution platform (e.g., via an app store) or to shareapplications. A prompt may be displayed in conjunction with anapplication (e.g., an application may ask for a rating in-app) and mayonly direct the user to the application distribution platform if therating is positive. If developers have confidence that an application iswell-liked, the developers may ask all users to leave a rating or sharethe application. As used herein, “sharing an application” may refer tosharing information about an application, sharing a link to download anapplication, sharing a promotional message about an application, etc.

A small percentage of users rate applications (e.g., 1:1500 ratings perdownload for free applications, 1:60 ratings per download for expensiveapplications).

Being prompted to share or rate an application may be an annoyingexperience for users. Users who are annoyed by prompts may close theprompt without rating or sharing the application. A user that is annoyedby a prompt may leave a poor rating (e.g., a negative review in therating) that reflects the opinion of the user of the prompt instead ofthe opinion of the user of the application.

Some users are not annoyed by prompts and are willing to leave honestratings or share the application. Users that have rated manyapplications in the past are likely to rate applications in the future.

By not providing prompts to users, application acquisition may decrease(e.g., due to lack of ratings and lack of sharing of the application).By providing prompts to all users, there may be reduced retention ofusers that are annoyed by prompts (e.g., users may stop using or deletethe application), the opinion of users that are annoyed by prompts maybe negatively affected, and the ratings may not reflect an honestrating.

Aspects of the present disclosure address the above and otherdeficiencies by providing personalized interruptive dialogs (e.g.,prompts) for rating and sharing of applications to users that are likelyto provide honest ratings or share the applications. In oneimplementation, the prompts are provided to a user based on theinteraction data of the user with applications. In anotherimplementation, prompts are provided to a user based on interaction dataof other users that are associated with the user (e.g., the user and theother users can be grouped together based on similar interests and/orother similarities). In one example, a prompt server may cause a promptfor taking an action with a current application (e.g., rating or sharingthe current application) to be displayed via a user device of a userthat commonly takes the action with other applications. In anotherexample, a prompt server may cause a prompt for taking an action with acurrent application to be displayed via a user device of a user that isassociated with (e.g., in the same group or cluster as) other users thatcommonly take the action with applications. The prompt server may seldomcause a prompt for taking an action to be displayed to a user device ofa user that does not commonly take the action with other applications.The user device may be a mobile device (e.g., phone, tablet, laptop,smart watch, etc.), a laptop, a desktop, a smart television, etc. andmay be capable of displaying a prompt to a user and receivinginteraction with the prompt and applications from the user.

In one example, an application may be part of a family of applications(e.g., applications of the same application provider, applicationsassociated with each other, etc.). If a user leaves a rating for firstand second applications of a family of applications, the user is likelyto receive a prompt requesting a rating for a third application of thefamily of applications. If a user shared applications from the family ofapplications, the user may receive a prompt asking the user to shareapplications in the family of applications (e.g., share or re-shareapplications in the family of applications). If a user dismissed aprompt asking for a rating for an application of the family ofapplications, the user is less likely to receive a prompt asking for arating for another application of the family of applications.

The user may be requested to provide a rating by a prompt displayed inconjunction with the application (e.g., provide the rating in-app)before being directed to an application distribution platform or theuser may be taken directly to the application distribution platform.

In one implementation, users that commonly leave ratings forapplications of an application distribution platform may be identifiedand a third party (e.g., third-party application developers) may beinformed to prompt the users for ratings.

Accordingly, by providing prompts for feedback for a particular mobileapplication only to users that are likely to provide feedback on theapplication and/or to users that are likely to share mobileapplications, aspects of the present disclosure facilitate a substantialincrease in the number of responses to feedback requests/sharings ofmobile applications while requiring no more, and probably fewer, networkresources. As a result, of the increased feedback the developers of theapplication can incorporate improvements in the application (and/or inother applications they develop). This leads to higher qualityapplications and, as a result, significantly more users accessapplications and download them. This in turn increases the popularity ofthe application distribution platform making use of the presentdisclosure among application developers/vendors.

By providing prompts for feedback for a particular mobile applicationonly to users that are likely to provide feedback on the applicationand/or to users that are likely to share the mobile applications,aspects of the present disclosure have technological advantages ofreduced bandwidth, reduced energy consumption (e.g., batteryconsumption), and reduced latency. The technological advantages mayresult from causing prompts to only be displayed to users that arelikely to provide feedback and/or share mobile applications instead ofcausing prompts to be displayed to all users. Selectively causingprompts to be displayed requires less bandwidth, energy consumption, andlatency than causing prompts to be displayed to all users.

Providing prompts for feedback for a particular mobile application onlyto users that are likely to provide feedback and/or that are likely toshare mobile applications increases the reliability of content deliverysystems, and reduces or eliminates the need for manual checking of theresults of such techniques. In addition, conventional techniques mayresult in transmitting prompts to users that are not likely to providefeedback for mobile applications and/or share mobile applications, whichmay lead to additional operations (e.g., one or more of repeatingtransmission of the prompts, receiving repeated rejections of theprompts by users, receiving negative ratings from users based onannoyance with the prompts, deleting of the applications by the usersresponsive to annoyance with the prompts, etc.). Thus, by selecting auser to which a prompt is to be provided that is likely to respond tothe prompt by providing feedback and/or share the application, aspectsof the present disclosure eliminate the need for the above additionaloperations, thereby resulting in more efficient use of computing(processing) resources and in improved user experience.

FIG. 1 illustrates an example system architecture 100, in accordancewith one implementation of the disclosure. The system architecture 100includes application distribution server 110, user devices 120A-Z,prompt server 130, a network 150, and a data store 160.

Application distribution server 110 may be one or more computing devices(such as a rackmount server, a router computer, a server computer, apersonal computer, a mainframe computer, a laptop computer, a tabletcomputer, a desktop computer, etc.), data stores (e.g., hard disks,memories, databases), networks, software components, and/or hardwarecomponents. The application distribution server 110 may be used toprovide a user with access to applications 112 (e.g., the applicationdistribution server 110 may host the applications 112). The applicationdistribution server may provide the applications 112 to the user (e.g.,a user may select an application 112 (e.g., in the app store) anddownload the application 112 from the application distribution server110 in response to requesting or purchasing the application 112).Application distribution server 110 may be a part of an applicationdistribution platform (e.g., application distribution service) that mayallow users to consume, develop, upload, download, rate, share, searchfor, approve of (“like”), dislike, and/or comment on applications 112.The application distribution platform may also include a website (e.g.,a webpage) or application back-end software that may be used to providea user with access to the applications 112.

Application distribution server 110 may host content, such asapplications 112. Applications 112 may be digital content chosen by auser, digital content made available by a user, digital contentdeveloped by a user, digital content uploaded by a user, digital contentdeveloped by a content provider (e.g., application developer), digitalcontent uploaded by a content provider (e.g., application developer),digital content provided by the application distribution server 110,etc. Examples of applications 112 include, and are not limited to,mobile applications, desktop applications, software applications, etc.Applications 112 may include (e.g., display) social media updates,digital video, digital movies, digital photos, digital music, websitecontent, social media updates, electronic books (eBooks), electronicmagazines, digital newspapers, digital audio books, electronic journals,web blogs, real simple syndication (RSS) feeds, electronic comic books,software applications, etc.

Applications 112 may be consumed via a web browser and/or via an appstore on the user device 120. As used herein, “application,” “mobileapplication,” “desktop application,” “software application,” “digitalcontent,” “content,” and “content item,” can include an electronic filethat can be executed or loaded using software, firmware or hardwareconfigured to present the application 112 to an entity. In oneimplementation, the application distribution platform may store theapplications 112 using the data store 160. In one example, application112 may be presented to and/or downloaded by a user of user device 120A.

In some implementations, system architecture 100 may also include aprompt server 130 coupled to user devices 120A-120Z via network 150 tocause the user devices 120A-120Z to display prompts 114. In oneimplementation, prompt server 130 may be part of the applicationdistribution platform and/or application distribution server 110. Inanother implementation, prompt server 130 may be an independent platformincluding one or more computing devices such as a rackmount server, arouter computer, a server computer, a personal computer, a mainframecomputer, a laptop computer, a tablet computer, a desktop computer, etc.

Prompt server 130 may include an application identifier component 132,an interaction component 134, and a prompt display mechanism (PDM)component 136 as described in more detail herein.

Application identifier component 132 may identify an application 112 forwhich feedback of a user is desired. A user may have downloaded theapplication 112 from the application distribution server 110 to a userdevice 120 of the user. In one implementation, application identifiercomponent 132 may be notified by the application distribution server 110that the user of the user device 120 downloaded the application and maydetermine that previous ratings and/or sharings of the application arebelow a threshold.

Interaction component 134 may determine whether previous userinteractions (e.g., interaction data 152 of the user, interaction data152 of users associated with (clustered with) the user) indicate thatthe user is interested in providing additional feedback for applications112 (e.g., feedback for a recently downloaded application 112 orfeedback for a previously downloaded application 112 for which the userhas not provided any feedback yet). Interaction component 134 maydetermine interactions (e.g., interaction data 152) of the user of theuser device 120 with one or more applications 112 by collecting andstoring feedback provided by the user for applications 112 (interactiondata 152) in interaction cache 154 of data store 160.

Interaction component 134 may collect interaction data 152 from one ormore user devices 120 of the user.

In one implementation, user device 120 may download the application 112from the application distribution server 110 and execute the application112 on the user device 120 (e.g., execute application 112 with orwithout access to network 150, execute the application 112 offline,etc.). The user device 120 may include a prompt manager 124 (e.g., amodule or a plugin of an operating system of the user device 120) thatreceives a prompt for user feedback from the prompt server 130 withinstructions to present this prompt at a predetermined event during theoperation of the application 122 (e.g., when the user requests to startor end the application, after a predetermined time interval from thestart of the application, after completing a predetermined level in theapplication, etc.). The prompt manager 124 may monitor operation of theapplication 112 and/or user requests during the operation of theapplication, and detect, based on the above monitoring, an occurrence ofthe predetermined event. In response to such an occurrence, the promptmanager 124 may present the prompt to the user at the predeterminedevent, receive user response to the prompt (e.g., dismissal of theprompt, an application rating provided by the user, an applicationsharing provided by the user, etc.), and store this response asinteraction data 152 in data store 122. The prompt manager 124 may thentransmit the interaction data 152 (e.g., periodically, when connected tonetwork 150, etc.) to interaction component 134 via network 150. In oneexample, when the user responds to the prompt by agreeing to share theapplication 112, the prompt manager 124 (in addition to storing thisresponse in data store 122) also enables the sharing of the application112 with one or more other users (e.g., by sending a link to downloadthe application 112, a promotional message about the application 112,etc. to the other users via conversation network 140 or network 150). Inanother example, the prompt manager 124 does not participate in theactual sharing of the application but merely provides the applicationsharing response of the user to the prompt server 130 (e.g., as part ofinteraction data 152 or separately).

In an alternative implementation, the application 112 may includeinstructions to present the prompt to the user at a predetermined event(e.g., when the user requests to start or end the application, after apredetermined time interval from the start of the application, aftercompleting a predetermined level in the application, etc.), and to storethe user response to the prompt as interaction data 152 in data store122. Prompt manager 124 (which may be an independent user deviceapplication or a component of another user device application) may thentransmit the interaction data 152 (e.g., periodically, when connected tonetwork 150, etc.) to interaction component 134 via network 150. In oneexample, when the user responds to the prompt by agreeing to share theapplication 112, the prompt manager 124 may detect such a user responseand enable the sharing of the application 112 with one or more otherusers (e.g., by sending a link to download the application 112, apromotional message about the application 112, etc. to the other usersvia conversation network 140 or network 150). In another example, theprompt manager 124 does not participate in the actual sharing of theapplication but merely provides the application sharing response of theuser to the prompt server 130 (e.g., as part of interaction data 152 orseparately).

In yet an alternative implementation, the prompt manager 124 may be amodule of an application provided by the application distributionplatform to run on the user device 120 (e.g., an application managing anapp store or providing an application distribution service on the userdevice 120). In such an alternative implementation, the prompt manager124 may include instructions to present the prompt to the user at apredetermined event pertaining to the user interaction with the appstore or the application distribution service (e.g., when accessing,viewing or searching the app store, when accessing or otherwiseinteracting with the application distribution service, etc.). The promptmanager 124 may then receive a user response to the prompt (e.g.,dismissal of the prompt, an application rating provided by the user, anapplication sharing provided by the user, etc.) and store the userresponse to the prompt as interaction data 152 in data store 122. Promptmanager 124 may then transmit the interaction data 152 (e.g.,periodically, when connected to network 150, etc.) to interactioncomponent 134 via network 150. In one example, when the user responds tothe prompt by agreeing to share the application 112, the prompt manager124 may also enable the sharing of the application 112 with one or moreother users (e.g., by sending a link to download the application 112, apromotional message about the application 112, etc. to the other usersvia conversation network 140 or network 150). In another example, theprompt manager 124 may not participate in the actual sharing of theapplication but rather provide the application sharing response of theuser to the prompt server 130 (e.g., as part of interaction data 152 orseparately).

In still another implementation, the prompt manager 124 combines anin-app prompt component and an app store prompt component to provideboth in-app prompts and app store prompts for applications 112. Thein-app prompt component (e.g., a module or a plugin of an operatingsystem of the user device 120) may receive a user response to a promptdisplayed via an application or by the in-app prompt component duringthe operation of the application, store the user response as interactiondata 152, and transmit the interaction data 152 to prompt server 130, asdiscussed in more detail above. The app-store prompt component (e.g., amodule of an application managing an app store or providing anapplication distribution service on the user device 120) may present aprompt to the user accessing/searching the app store or the applicationdistribution service, receive a user response to the prompt, store theuser response as interaction data 152, and transmit the interaction data152 to prompt server 130, as discussed in more detail above.

Interaction component 134 may receive the interaction data 152 and storethe interaction data 152 in the interaction cache 154 of the data store160. The interaction data 152 may be received from multiple user devices112 of the user (e.g., a smart phone, a laptop, a PDA, etc.) andassociated with the identifier of the user in the data store 160. In oneimplementation, interaction component 134 may receive an applicationsharing response of the user from the prompt manager 124 and may enablethe sharing of the application 112 with one or more other users (e.g.,by sending a link to download the application 112, a promotional messageabout the application 112, etc. to user devices of the other users vianetwork 150).

The interaction component 134 may access the interaction data 152 todetermine whether previous user interactions with applications 112indicate that the user is interested in providing feedback for theapplications 112. For example, the interaction component 134 may analyzethe interaction data 152 and determine, based on the interaction data,whether the user's negative responses to previous prompts relating toapplications 112 (e.g., dismissal of prompts, negative applicationratings, etc.) exceed the user's positive responses to such prompts(e.g., provision of feedback, positive application ratings, applicationssharings, etc.) by a predetermined threshold (e.g., a thresholdpercentage, a threshold number of feedbacks, etc.). If so, theinteraction component 134 may determine that the user is not interestedin providing feedback for applications 112. Otherwise, the interactioncomponent 134 may determine that the user is interested in providingfeedback for applications 112.

PDM component 136 may define conditions for presenting a prompt 114 forfeedback for the application 112 to a user as described in more detailherein. For example, the PDM component 136 may define the promptpresentation conditions based on the analysis of the interaction data152 indicating whether the user is interested in providing feedback forapplications 112. PDM component 136 may determine timing, frequency,impact, etc. of displaying the prompt 114 to the user based on theprevious user interactions as described in more detail herein. In oneimplementation in which prompts 114 are presented by prompt manager 124,the PDM component 136 may provide the prompt presentation conditions tothe prompt manager 124, and periodically provide updated conditions(determined based on recent interaction data 152) to the prompt manager124 for presentation to the user (e.g., during operation of theapplication 112 or in the app store).

In an alternative implementation in which prompts 114 are presented bythe application, the PDM component 136 may provide the promptpresentation conditions for inclusion in the application. For example,the application may include instructions on how to present prompt 114based on the above prompt presentation conditions. In someimplementations, the application may periodically request updated promptpresentation conditions from the PDM component 136.

In one implementation, prompt server 130 may host content, such asprompts 114. Prompts 114 may be digital content developed by a contentprovider (e.g., application developer, app store), digital contentuploaded by a content provider (e.g., application developer, app store),digital content provided by the application distribution server 110,etc. Examples of prompts 114 include, and are not limited to, textboxes, links, buttons, a prompt to rate an application, a prompt toshare an application, an interruptive dialog for application rating, aninterruptive dialog for application sharing, a prompt to make a purchase(e.g., in-app purchase, app store purchase), etc. In one implementation,prompt 114 includes instructions that cause a user device 120 todisplay, to a user, a prompt to rate or share an application 112.

Prompts 114 may be consumed via a web browser and/or via a mobile deviceapplication. For brevity and simplicity, an interruptive dialog is usedas an example of a prompt 114 throughout this document. As used herein,“digital content,” “content,” “content item,” “prompt,” “dialog,”“interruptive dialog,” “link,” and “button” can include an electronicfile that can be executed or loaded using software, firmware or hardwareconfigured to present the prompt 114 to an entity. In oneimplementation, the prompt server 130 or application distributionplatform may store the prompts 114 using the data store 160 (e.g., inprompt cache 123). A prompt 114 may be an interruptive dialog to bepresented before, during or after executing an application 112 on a userdevice 120. Alternatively, a prompt 114 may be an interruptive dialog tobe presented before, during or after accessing the applicationdistribution platform (e.g., an app store, application distributionservice).

In one implementation, the prompt server 130 may provide prompts 114 toprompt manager 124 of user device 120 to cause prompts 114 to bepresented to the user. For example, the same prompts 114 may be providedfor all applications 112 or different prompts 114 may be provided fordifferent applications 112, and then presented to the user by promptmanager 124 as discussed above.

Alternatively, the prompt server 130 may allow users (e.g., applicationdevelopers) to select prompts 114 for their applications (e.g., bypresenting available prompts via a user interface for selection). Forexample, an application developer may select a prompt requesting anapplication rating and a prompt requesting an application sharing, andadd instructions to the application to present these prompts asdiscussed in more detail above.

Data store 160 may include a prompt cache 123 that stores one or more ofinstructions that are to be transmitted to cause a user device 120 todisplay a prompt 114, instructions that have been transmitted to cause auser device 120 to display a prompt 114, prompts 114 that have beendisplayed, prompts 114 that are to be displayed, etc. Data store 160 mayinclude an interaction cache 154 that stores interaction data 152 (e.g.,data regarding previous user interactions of the user with one or moreapplications 112, rating data, sharing data, engagement data, negativeinteraction data, feedback interest data, etc.).

User devices 120A-Z may each include computing devices such as personalcomputers (PCs), laptops, mobile phones, smart phones, tablet computers,netbook computers, network-connected televisions, etc. User devices120A-Z may be capable of receiving (e.g., downloading) applications 112from application distribution server 110 over a network 150. Userdevices 120A-Z may be capable of receiving prompts 114 to display on theuser device 120 and/or instructions to display prompts 114 on the userdevice 120. As discussed above, a prompt 114 may be a prompt forfeedback for an application 112. The prompt 114 may be a request to rateor share an application 112. Upon accepting a prompt 114 to share anapplication 112, the user device 120 may transmit a message sharing theapplication 112 to one or more other user devices 120 via a conversationnetwork 140, a network 150, or a combination thereof.

Conversation network 140 may be a computing network that provides one ormore communication channels between user devices 120A-Z. In one example,conversation network 140 may be a peer-to-peer network that does notrely on a pre-existing network infrastructure (e.g., access points,switches, routers) and the user devices A-Z may replace the networkinginfrastructure to route communications between the user devices.Conversation network 140 may be a wireless network that isself-configuring and enables user devices 120A-Z to contribute toconversation network 140 and dynamically connect and disconnect fromconversation network 140 (e.g., ad hoc wireless network). In anotherexample, conversation network 140 may be a computing network thatincludes networking infrastructure that enables user devices tocommunicate with other user devices. In the latter example, conversationnetwork 140 may or may not have access to the public network (e.g., theInternet). For example, a vehicle (e.g., bus, train) or location (e.g.,classroom, library, café, etc.) may provide an access point or userdevice that may function as an access point to enable user devices tocommunicate with one another without providing internet access.Alternatively, the conversation network 140 may provide access to alarger network such as network 150 (e.g., the Internet). In oneimplementation, conversation network 140 may be based on any wireless orwired communication technology and may connect a first user devicedirectly or indirectly (e.g., involving an intermediate user device) toa second user device. The wireless communication technology may includeBluetooth®, Wi-Fi®, infrared, ultrasonic or other technology. The wiredcommunication may include universal serial bus (USB), Ethernet, RS 232,or other wired connection. The conversation network 140 may be anindividual connection between two devices or may include multipleconnections.

Network 150 may be a public network that provides one or more of userdevices 120A-Z with access to application distribution server 110,prompt server 130, and other publically available computing devices.Network 150 may include one or more wide area networks (WANs), localarea networks (LANs), wired networks (e.g., Ethernet network), wirelessnetworks (e.g., an 802.11 network or a Wi-Fi network), cellular networks(e.g., a Long Term Evolution (LTE) network), routers, hubs, switches,server computers, and/or a combination thereof.

Each of user devices 120A-Z may include an operating system that allowsusers to execute applications 112. The operating systems may allow usersto view messages (e.g., messages sharing an application 112, textmessages, chat messages) that are transmitted over conversation network140 and/or network 150. The application 112 may include a media viewer,a web browser, etc. to present images, videos, audio, web pages,documents, etc. In one example, the application 112 may include a webbrowser that can access, retrieve, present, and/or navigate content(e.g., web pages such as Hyper Text Markup Language (HTML) pages,digital media items, text conversations, notifications, etc.) served bya web server. The application 112 may render, display, and/or presentthe content to a user. The application 112 may also display an embeddedmedia player (e.g., a Flash® player or an HTML5 player) that is embeddedin a web page (e.g., a web page that may provide information about aproduct sold by an online merchant). In another example, the application112 may be a standalone application (e.g., a mobile application or app)that allows users to view digital media items (e.g., digital videos,digital images, electronic books, etc.), to participate in textconversations, and/or to receive prompts 114.

According to aspects of the disclosure, an application 112 may allowusers to watch content, participate in a conversation, interact with aprompt 114, share the application 112, rate the application 112, etc.Sharing and/or rating of an application 112 may be via the applicationand/or the application distribution platform (e.g., applicationdistribution service). An application 112 may be provided to userdevices 120A-Z by application distribution server 110 or an applicationdistribution platform. For example, the application 112 may include anembedded media player (as well as other components) included in webpages provided by the application distribution platform. In anotherexample, the application 112 may be provided by the applicationdistribution platform and is installed and executed on user device120A-Z.

In the example shown in FIG. 1, each user device may include a promptmanager 124 and a data store 122.

Data store 122 may be a memory (e.g., random access memory), a drive(e.g., a hard drive, a flash drive), a database system, or another typeof component or device capable of storing data. Data store 122 mayinclude multiple storage components (e.g., multiple drives or multipledatabases) that may span multiple computing devices (e.g., multipleserver computers). Data store 122 stores interaction data 152 providedby applications 112 or by prompt manager 124.

In one implementation in which prompts 114 are presented by applications112, the prompt manager 124 periodically sends interaction data 152provided by the applications 112 to the prompt server 130. In oneexample, the prompt manager 124 may detect that a recent user responseto the prompt involved the sharing of application 112 and may enable thesharing of the application 112 with one or more other users (e.g., bysending a link to download the application 112, a promotional messageabout the application 112, etc. to the other users via conversationnetwork 140 or network 150). In another example, the prompt manager 124may not participate in the actual sharing of the application but ratherprovide the application sharing response of the user to the promptserver 130 (e.g., as part of interaction data 152 or separately).

In another implementation in which prompts 114 are presented by theprompt manager 124, the prompt manager 124 determines whether and/or howto present a prompt 114 to the user based on information regarding theprompt 114, identity of the application 112 associated with the prompt114, and prompt presentation conditions (e.g., timing, frequency, levelof impact for displaying the prompt, etc.) provided by prompt server130. The prompt manager 124 presents the prompt 114 according to theinformation received from the prompt server 130, receives the user'sresponse to the prompt 114, stores the user response as interaction data152 in data store 122.

In one example, the prompt manager 124 may detect that a recent userresponse to the prompt involved sharing application 112 and may enablethe sharing of the application 112 with one or more other users (e.g.,by sending a link to download the application 112, a promotional messageabout the application 112, etc. to the other users via conversationnetwork 140 or network 150). In another example, the prompt manager 124may not participate in the actual sharing of the application but ratherprovide the application sharing response of the user to the promptserver 130 (e.g., as part of interaction data 152 or separately).

In one implementation, upon user selecting to share an application 112(e.g., via positive interaction with a prompt), the user device 120 maytransmit a message sharing the application 112 directly to another userdevice 120 (e.g., via conversation network 140 or network 150). In oneimplementation, upon user selecting to share an application 112, theprompt server 130 may transmit a message sharing the application 112 toanother user device 120 (e.g., via network 150). The message sharing theapplication 112 may be one or more of a push notification, a mobilenative notification, a text message, a desktop notification, an email,an alert, a text conversation, a URL in a conversation, etc. The messagesharing the application 112 may indicate that the user of the userdevice 120 has downloaded the application 112. The message sharing theapplication 112 may be an invitation to download the application 112.The message may include information included in the application 112 orinformation about the application 112. The message may include a commentfrom the user of the user device 120. The user may select one or more ofa set of contacts to which a message sharing the application 112 is tobe transmitted. In one implementation, the message sharing theapplication 112 may be transmitted via a conversation (e.g., if the userand the one or more selected set of contacts are in the conversation).

The transmitting of a message to share the application 112 may functionin multiple modes including a one-on-one mode, a public mode, and aprivate mode. The one-on-one mode may involve the user device 120Atransmitting messages to a user of user device 120B and receivingmessages from the user of user device 120B.

The public mode may be similar to the one-on-one mode in that userdevice 120 may receive messages from a user, but when the public mode isenabled there may be multiple user devices. Some or all of a selectedset of contacts of the user may be associated with an applicationdistribution server 110 (e.g., from which the application 112 may bedownloaded). User device 120 may select one or more of the users withoutselecting a specific user device. In this example, the user device thatis sharing the application 112 may remain anonymous to user device 120.In public mode, the sharing of an application 112 may be a publicmessage so that users who are not contacts of the user may see whatmessages are being transmitted or users who are not contacts of the usermay receive the messages.

The private mode may be similar to the one-on-one mode and the publicmode but may include an approval stage. During the approval stage, theuser device that is participating in an application distributionplatform may receive a request to receive a message sharing anapplication 112 from another user and may approve or disapprovereceiving the message. In one example, the approval or disapproval maybe based on user input, in which case the interaction component 134 andmay notify the user and the user may provide input that approves ordisapproves the receiving of the message sharing application 112. Inprivate mode, the message sharing the application 112 may be a privateconversation so that only the participants in the conversation see themessage.

In general, functions described in one implementation as being performedby the application distribution server 110 and/or prompt server 130 canalso be performed on the user devices 120A through 120Z in otherimplementations, if appropriate. For example, prompt manager 124 may useinteraction data 152 stored locally in data store 122 to determine(instead of prompt server 130) whether the user's previous interactionswith applications 112 indicate that the user is interested in providingfeedback for applications 112 and then decide whether to present aprompt 114 based on the above determination.

In general, functions described in one implementation as being performedon the user devices 120A through 120Z can also be performed by theapplication distribution server 110 and/or prompt server 130 in otherimplementations, if appropriate. For example, the applicationdistribution platform may collect and store user ratings received viathe application distribution server platform as interaction data 152,transmit the interaction data 152 to prompt server 130, and receiveprompt presentation conditions from the prompt server 130 to display aprompt to a user via the application distribution platform. In anotherexample, a set of applications may collect and store user ratingsreceived via an application of the set of applications as interactiondata 152, transmit the interaction data 152 to prompt server 130, andreceive prompt presentation conditions from the prompt server 130 todisplay a prompt to a user via another application of the set ofapplications.

In addition, the functions of a particular component can be performed bydifferent or multiple components operating together. The applicationdistribution platform, application distribution server 110, and promptserver 130 can also be accessed as a service provided to other systemsor devices through appropriate application programming interfaces (API),and thus is not limited to use in websites and applications.

In implementations of the disclosure, a “user” may be represented as asingle individual. However, other implementations of the disclosureencompass a “user” being an entity controlled by a set of users and/oran automated source. For example, a set of individual users federated asa community in a social network may be considered a “user.” In anotherexample, an automated consumer may be an automated ingestion pipeline ofthe application distribution platform.

Although implementations of the disclosure are discussed in terms of anapplication distribution server 110, prompt server 130, and anapplication distribution platform, implementations may also be generallyapplied to any type of social network providing content and connectionsbetween users.

In situations in which the systems discussed here collect personalinformation about users, or may make use of personal information, theusers may be provided with an opportunity to control whether theapplication distribution platform collects user information (e.g.,information about a user's social network, social actions or activities,profession, a user's preferences, or a user's current location), or tocontrol whether and/or how to receive content from the content serverthat may be more relevant to the user. In addition, certain data may betreated in one or more ways before it is stored or used, so thatpersonally identifiable information is removed. For example, a user'sidentity may be treated so that no personally identifiable informationcan be determined for the user, or a user's geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of a usercannot be determined. Thus, the user may have control over howinformation is collected about the user and used by the applicationdistribution platform and what user information is transmitted to theapplication distribution server 110 and prompt server 130. In anotherexample, in response to interacting with a prompt 114 to share anapplication 112, a message sharing the application 112 may only betransmitted to participants in the same conversation as the user. Inanother example, the user may select to which users the user wants tosend messages sharing the application 112 and messages sharing theapplication 112 will only be sent to those users. Thus, the user mayhave control over with whom message sharing the application 112 areshared.

FIG. 2 is a block diagram illustrating the prompt server 130. In theexample shown in FIG. 2, the prompt server 130 includes an applicationidentifier component 132, an interaction component 134, and a PDMcomponent 136 coupled to data store 160 via network 150. One or more ofthe application identifier component 132, interaction component 134, orPDM component 136 may be part of prompt server 130, applicationdistribution server 110, or application distribution platform.

Application identifier component 132 identifies an application 112 forwhich feedback is desired. In one implementation, application identifiercomponent 132 receives instructions (e.g., from a third party, anapplication developer, an application owner, etc.) identifying anapplication 112 for which feedback is desired. In one implementation,application identifier component 132 monitors one or more applications112 (e.g., a family of applications, applications in an app store, etc.)to identify an application 112 for which feedback is desired (e.g., theapplication 112 has a low amount of ratings or shares). In oneimplementation, the application identifier component 132 identifiesapplications 112 that are new or have a new version (e.g., do not havemany ratings or shares).

Interaction component 134 determines whether previous user interactionswith applications 112 indicate that the user is interested in providingfeedback for the applications 112. Interaction component 134 may includea rating module 210, a sharing module 212, an engagement module 214, anegative interaction module 216, a clustering module 218, and a feedbackinterest module 219.

The interaction component 134 may determine interactions of the userwith prompts and applications displayed by one or more user devices ofthe user. The interaction component 134 determines interactions of theuser by collecting and storing feedback provided by the user forapplications 112 (interaction data 152) in interaction cache 154 of datastore 160. Interaction component 134 may collect interaction data 152from one or more user devices 120 of the user. The interaction data mayinclude rating data, sharing data, engagement data, negative interactiondata, clustering data, and feedback interest data.

Rating data includes previous user interactions of a user with a prompt114 to rate an application 112. The rating module 210 may determine theprevious user interactions (e.g., rating data) of a user of user device120 with a prompt 114 to rate an application 112. The rating module 210may collect and store ratings of applications 112 (ratings data)provided by the user. The prompt manager 124 may receive user responsesto prompts for rating an application (user ratings), store the userresponses as rating data, and transmit the rating data to the ratingmodule 210. The rating module 210 may collect (e.g., receive) ratingdata from one or more user devices 120 of the user and store the ratingdata as interaction data 152 in the interaction cache 154. The userratings may be via interactions of the user while accessing/searching anapplication distribution platform (e.g., an app store) and/or duringoperation of an application of a family of applications.

The previous user interaction (e.g., rating data) of the user mayinclude dismissing the prompt 114, providing a rating through the prompt114, the level of the rating provided through the prompt 114 (e.g., howmany of a total number of stars, recommends, does not recommend, etc.),leaving a comment through the prompt 114, etc. Positive interaction ofthe user with the prompt 114 may include providing a rating through theprompt 114, providing a rating that meets a threshold rating levelthrough the prompt 114 (e.g., at least three out of five stars), orproviding a rating that does not meet a threshold rating level with anaccompanying comment (e.g., providing one or two stars out of five starswithout a comment of why the low rating was provided). The rating module210 may store interaction data 152 (e.g., rating data, etc.) in theinteraction cache 154 of data store 160.

Sharing data includes previous user interactions of a user with a prompt114 to share an application 112. The sharing module 212 may collect andstore application sharing responses (sharing data) provided by the userto prompts for sharing an application. The prompt manager 124 mayreceive user responses to prompts for sharing an application(application sharing responses), store the user responses as sharingdata, and transmit the sharing data to the sharing module 212. Thesharing module 212 may collect (e.g., receive) the sharing data from oneor more user devices 120 of the user and store the sharing data asinteraction data 152 in the interaction cache 154. The applicationsharing responses may be via interactions of the user whileaccessing/searching an application distribution platform (e.g., an appstore) and/or during operation of an application of a family ofapplications. The sharing data may include which application was shared,the information included (e.g., comment, link, etc.) in the messagesharing the application, the users with which the application wasshared, etc. Positive interaction of the user with the prompt 114includes sharing the application with one or more users.

The engagement module 214 may determine a level of engagement (e.g.,engagement data, previous user interactions) of the user withapplications 112. The previous user interactions may include a level ofengagement of the user with an application 112 (e.g., the application112 for which prompt server 130 is determining whether to present aprompt 114).

Engagement may include engagement of the user with features of anapplication 112. Engagement may include an indication of positivepreference of (e.g., “liking”) content (e.g., multimedia content)through the application 112. Engagement may include consuming (e.g.,watching, purchasing) content through the application 112. Engagementmay include the quantity of time that the user interacts with theapplication 112. Engagement may include the number of interactions withthe application 112 (e.g., number of launches, number of new activities,number of refreshing of content, etc.). Engagement may includeachievement reached (e.g., level of a game, pages read, modulescompleted, etc.) through the application 112. Engagement may include theapplications 112 with which the user has interacted (e.g., number ofapplications 112 in a family of applications with which a user hasinteracted, etc.). In one implementation, engagement includes purchasesmade (e.g., in-app purchases, app store purchases, etc.).

A level of engagement may refer, for example, to a number ofinteractions with applications 112 of the application distributionserver 110 over a time period. A level of engagement may refer, forexample, to a number of interactions with applications 112 of a certainfamily of applications or a particular application over a time period.The engagement module 214 may store interaction data 152 (e.g.,engagement data, etc.) in the interaction cache 154 of data store 160.In one implementation, the engagement data may be specific to engagementof the user with an application 112 for which the PDM component 136 isdetermining whether to provide a prompt 114 to the user. In oneimplementation, the engagement data may encompass engagement of the userwith one or more applications 112. The one or more applications 112 mayor may not include the application 112 for which the PDM component 136is determining whether to provide the prompt 114 to the user.

The negative interaction module 216 may determine negative interactionbehavior (e.g., negative interaction data, previous user interactions)of the user with applications 112 or prompts 114. Negative interactionbehavior may include dismissing a prompt 114. Negative interactionbehavior may include leaving a poor rating through a prompt 114 (e.g.,one out of four stars, etc.). Negative interaction data may includeleaving a poor rating without a comment through a prompt 114 (e.g.,indicating the user may be annoyed by the prompt 114, but not with theapplication 112). Negative interaction data may include low engagementwith the application 112 (e.g., the user has less than a thresholdamount of engagement with an application within a threshold amount oftime, the rating may not be an honest rating of the application 112).The negative interaction module 216 may flag a user as having negativelyresponded to a threshold amount of prompts 114 over a threshold amountof time. The user may then be flagged across all services of anapplication distribution platform (e.g., the user may not receiveadditional prompts 114 for any applications 112 associated with theapplication distribution platform). The negative interaction module 216may store interaction data 152 (e.g., negative interaction data, whetherthe user is flagged, how many times the user was flagged over a periodof time, etc.) in the interaction cache 154 of data store 122.

The clustering module 218 may group users into clusters based on userinformation. For example, a first cluster may include users within afirst age group and a second cluster may include users within a secondage group. In another example, a first cluster includes users located ina first geographical location and the second cluster includes users in asecond geographical location.

The clustering module 218 may generate a median positive interactionrate for each cluster based on the interaction data 152 of at least asubset of the users within the cluster. For example, if there are tenpeople in a cluster and rating data is known for five people, theclustering module 218 may use the known rating data to generate a medianpositive interaction rate (e.g., a median of the different rating datavalues) for the cluster. If interaction data 152 of a first user is notknown and interaction data 152 of other users in the same cluster as thefirst user is known, the clustering module 218 can calculate a medianpositive interaction rate for the cluster. The median positiveinteraction rate can be used to determine whether to show a prompt toany user in the corresponding cluster.

In one implementation, the clustering module 218 receives userinformation corresponding to users from the user devices 120. In oneimplementation, the clustering module 218 receives the user information(e.g., profile information, registration information, applicationdownload information, etc.) from the application distribution server 110or the application distribution platform. The user information mayinclude user attributes (e.g., age group), how long the user has beenusing the service (e.g., an application 112, application distributionplatform, etc.), the device type of the device 120, user behaviorhistory, geolocation, type of applications 112 installed on the userdevice 120, etc. The clustering module 218 may store interaction data152 (e.g., interaction data of each of the clusters, user information,cluster data, median positive interaction rates of each cluster, usersin each cluster, etc.) in the interaction cache 154 of data store 122.

The feedback interest module 219 may access the interaction data 152from the interaction cache 154. The feedback interest module 219 maydetermine from the interaction data 152 whether the previous userinteractions with applications 112 indicate the user is interested inproviding feedback for the applications 112.

In one implementation, the feedback interest module 219 may determinethe user is interested in providing feedback in response to determiningthe interaction data 152 indicates that a quantity of the one or moreratings (e.g., rating data) meets a threshold quantity (e.g., the userhas rated a threshold number of applications). In one implementation,the feedback interest module 219 may determine the user is interested inproviding feedback in response to determining that the interaction data152 indicates that a quantity of the one or more shares meets athreshold quantity (e.g., the user has shared a threshold number ofapplications, the user has caused a threshold number of messages sharingone or more applications to be sent). In one implementation, thefeedback interest module 219 may determine the user is interested inproviding feedback in response to determining that the level ofengagement meets a threshold level.

In one implementation, the feedback interest module 219 may determinethe user is interested in providing feedback in response to determiningthat a quantity of negative interactions does not meet a thresholdquantity. In one implementation, the feedback interest module 219 maydetermine the user is interested in providing feedback in response todetermining that a number of flags indicating negative interaction arebelow a threshold number.

In one implementation, the feedback interest module 219 may determinethe user is interested in providing feedback in response to determiningthat a median positive interaction rate (e.g., corresponding to thecluster associated with the user) meets a threshold rate.

In one implementation, the feedback interest module 219 may determinethe user is interested in providing feedback in response to determininga combination of two or more of rating data, sharing data, engagementdata, negative interaction data, or median positive interaction ratefrom the interaction data 152 meet a threshold.

The interaction data 152 may include feedback interest data (e.g., adetermination if the user is interested in providing feedback forapplications 112) generated by the feedback interest module 219. Thefeedback interest module 219 may store interaction data 152 (e.g.,feedback interest data) in the interaction cache 154 of the data store160.

PDM component 136 may include a prompt instruction module 220 and animpact module 222. The PDM component 136 may access the interaction data152 in the interaction cache 154.

The prompt instruction module 220 may define conditions for presenting aprompt 114 for the feedback for the application 112. For example, theprompt instruction module 220 may define the prompt presentationconditions based on the analysis of the interaction data 152 (e.g., thefeedback interest data) indicating whether the user is interested inproviding feedback for applications 112. The prompt presentationconditions may include the timing, frequency, impact, etc. of displayingthe prompt 114 to the user based on the interaction data 152 and theimpact level determined by the impact module 222.

In one implementation, the prompt instruction module 220 may provideprompt presentation conditions to the prompt manager 124 to display theprompt 114 to make a purchase (e.g., an in-app purchase, an app storepurchase) if the interaction data 152 indicates the user previously madepurchases (e.g., in-app purchases, app store purchases). The interactiondata 152 may indicate the cluster of users that includes the user isinterested in or made purchases via applications 122 or in theapplication distribution platform (e.g., an in-app purchase, an appstore purchase).

In one implementation, the impact module 222 may determine a level ofimpact (or “aggressiveness”) for displaying the prompt 114 to the userbased on the previous user interactions (e.g., interaction data 152).The level of impact may include invasiveness of the prompt 114 (e.g.,the prompt 114 requires interaction to continue interacting with theapplication 112, the level of interaction (e.g., swiping the prompt 114,inserting input in the prompt 114) to dismiss the prompt 114, the usercan scroll past the prompt 114, the prompt 114 does not limitfunctionality of the application 112, etc.). The level of impact mayinclude size of the prompt 114 (e.g., the amount of the application 112that the prompt 114 blocks, the amount of the user interface that theprompt 114 covers (e.g., a full page interstitial), etc.). The level ofimpact may include frequency of displaying the prompt. The level ofimpact may include timing of the displaying of the prompt 114 (e.g., theprompt 114 is displayed after the playing of a media content item, theprompt 114 is displayed after completing a level or module, the prompt114 is displayed while the application 112 is loading). The level ofimpact may include location of displaying the prompt 114 (e.g., theprompt 114 is shown at the bottom of the user interface, amount offunctionality of the user interface that the prompt 114 covers). Asdescribed in this disclosure, the user device 120 displaying the prompt114 to the user may include displaying the prompt 114 based on the levelof impact (e.g., at the level of impact determined by the impact module222). The level of impact of displaying the prompt 114 may increase asthe interest of the user in providing feedback for the applicationsincreases (e.g., as indicated by the previous user interactions with theone or more applications). Different levels of interest or previous userinteractions may be related to different levels of impact.

FIGS. 3-4 depict flow diagrams for illustrative examples of methods 300and 400 for implementing personalized interruptive dialogs forapplication rating and sharing. Method 300 is an example method from theperspective of a server device (e.g., prompt server 130). Method 400 isan example method from the perspective of a user device (e.g., userdevice 120). Methods 300 and 400 may be performed by processing devicesthat may include hardware (e.g., circuitry, dedicated logic), software(such as is run on a general purpose computer system or a dedicatedmachine), or a combination of both. Methods 300 and 400 and each oftheir individual functions, routines, subroutines, or operations may beperformed by one or more processors of the computer device executing themethod. In certain implementations, methods 300 and 400 may each beperformed by a single processing thread. Alternatively, methods 300 and400 may be performed by two or more processing threads, each threadexecuting one or more individual functions, routines, subroutines, oroperations of the method.

For simplicity of explanation, the methods of this disclosure aredepicted and described as a series of acts. However, acts in accordancewith this disclosure can occur in various orders and/or concurrently,and with other acts not presented and described herein. Furthermore, notall illustrated acts may be required to implement the methods inaccordance with the disclosed subject matter. In addition, those skilledin the art will understand and appreciate that the methods couldalternatively be represented as a series of interrelated states via astate diagram or events. Additionally, it should be appreciated that themethods disclosed in this specification are capable of being stored onan article of manufacture to facilitate transporting and transferringsuch methods to computing devices. The term “article of manufacture,” asused herein, is intended to encompass a computer program accessible fromany computer-readable device or storage media. For example, anon-transitory machine-readable storage medium may store instructionswhich, when executed, cause a processing device (e.g., of a user device120, of prompt server 130, etc.) to perform operations including methodsdisclosed within. In one implementation, method 300 may be performed byprompt server 130 of FIG. 1 and method 400 may be performed by userdevice 120 of FIG. 1.

Referring to FIG. 3, method 300 may be performed by one or moreprocessing devices of a prompt server 130 that cause the user device 120to display a prompt 114 to a user.

Method 300 may begin at block 302 where the processing device of aserver device (e.g., prompt server 130, PDM component 136) may identifya first application 112 for which feedback of a user of a user device(e.g., user device 120) is desired. In one example, the processingdevice may determine that an application 112 has a quantity of ratingsor shares that are below a threshold level. In another example, theprocessing device may determine the application 112 is new or has a newversion that has not been rated or shared. In another example, theprocessing device may receive input indicating an application 112 (e.g.,from a third party, from an application vendor, etc.) for which feedbackis desired.

At block 304, the processing device may determine whether previous userinteractions (e.g., interaction data 152, ratings, shares, engagement,low negative interaction, etc.) with applications indicate that the useris interested in providing feedback for the applications.

In one implementation, the previous user interactions include ratings ofapplications by the user via prompts. The processing device maydetermine that a quantity of ratings of applications performed by theuser meets a threshold quantity, which indicates that the user isinterested in providing new feedback for the applications. For example,a family of applications may include five applications and a thresholdamount of ratings may be two. If a user has rated at least two of thefive applications, the processing device may determine the previousinteractions (e.g., two ratings) indicate the user is interested inproviding the feedback.

In one implementation, the previous user interactions include a level ofengagement of the user with the first application. The processing devicemay determine that the level of engagement meets a threshold level,which indicates that the user is interested in providing new feedbackfor the applications. The level of engagement may be determined by oneor more of the amount of time the user has been using the application,the user's purchases through the application, the user's level achievedon the application, etc. For example, the threshold level may be fivehours of use of the application. If the user has interacted with theapplication for at least five hours, the processing device may determinethe previous interactions (e.g., five hours of interaction) indicate theuser is interested in providing the feedback.

In one implementation, the previous user interactions include ratings,by the user via one or more prompts, of applications and a level ofengagement of the user with the first application 112. The processingdevice may generate a combined score based on the one or more ratingsand the level of engagement, and determine the combined score meets athreshold score, which indicates that the user is interested inproviding new feedback for the applications. For example, each ratingmay be ten points, each hour of interaction may be ten points, thegenerated score may be the sum of the points from ratings and hours ofinteraction, and the threshold score may be fifty points.

In one implementation, the previous user interactions include negativeinteractions. Negative interactions may include, for example, dismissinga prompt to rate applications, having a level of engagement with theapplication that does not meet a threshold level, providing a rating forone or more applications that does not meet a threshold rating and/ordoes not have an accompanying comment, etc. The processing device maydetermine that a quantity of negative interactions does not meet athreshold quantity, which indicates that the user is interested inproviding new feedback for the applications. For example, if thethreshold amount of negative interactions is three, and the userprovided two negative interactions, then the processing device maydetermine the previous interactions (e.g., two negative interactions)indicate the user is interested in providing the feedback.

At block 306, responsive to determining that the previous userinteractions with the application(s) indicate that the user isinterested in providing feedback for the application(s), the processingdevice may provide instructions (e.g., including prompt presentationconditions) to the user device to cause the user device (e.g., userdevice 120) to display, to the user, a prompt 114 for the feedback forthe application 112. In one implementation, the processing deviceprovides the instructions to the application 112. In anotherimplementation, the processing device provides the instructions toprompt manager 124.

In one implementation, the prompt 114 for the feedback for theapplication 112 is a request to rate the application 112. In oneimplementation, the prompt 114 for the feedback for the application 112is a request to share the application 112. In one implementation, theprompt 114 is a request to make a purchase (e.g., in-app purchase, appstore purchase).

In one implementation, method 300 further includes determining a levelof impact for displaying the prompt to the user based on the previoususer interactions (e.g., interaction data 152). The level of impact mayinclude at least one of invasiveness of the prompt, size of the prompt,or location of the displaying of the prompt. For example, in response todetermining the user has high interest in providing feedback for theapplication, the processing device may transmit instructions to theprompt manager 124 to cause the prompt 114 to be displayed to encompassthe entire user interface of the user device. In another example, inresponse to determining the user has lower interest in providingfeedback for the application, the processing device may cause the prompt114 to be displayed to encompass a small portion of the user interfaceof the user device. In one implementation, the processing device mayalternatively or in addition utilize prompt presentation conditions(e.g., frequency of the displaying of the prompt, timing of thedisplaying of the prompt, etc.) defined above to determine when and howto display the prompt. For example, if the user has high interest inproviding feedback for the application, the prompt presentationconditions can specify that the prompt 114 be displayed upon launchingthe application. In another example, if the user has lower interest inproviding feedback for the application, the prompt presentationconditions can specify that the prompt 114 be displayed while loadingthe next level of the application after successfully completing one ormore earlier levels of the applications.

In one implementation, method 300 further includes receiving userinformation corresponding to various users. The method 300 may group theusers into clusters based on the user information. A median positiveinteraction rate may be determined for each cluster based on theinteraction data 152 of users in the cluster. For example, availablerating data, sharing data, and engagement data for users in a firstcluster may be combined to generate a first median positive interactionrate for the first cluster. The processing device may determine that theuser is part of a first cluster of users and determine that the firstmedian positive interaction rate of the first cluster meets a thresholdrate. The processing device may provide (e.g., to the prompt manager 124of the user device 120) prompt presentation conditions based on theanalysis of the first median positive interaction rate of the firstcluster indicating that the user is interested in providing feedback forapplications. The user device may display the prompt 114 to the user(e.g., based on the interaction data 152 of other users in the cluster).

Referring to FIG. 4, method 400 may be performed by one or moreprocessing devices of a user device and may begin at block 402.

At block 402, the processing device of the user device of a user mayreceive (e.g., over network 150 from prompt server 130) instructions(e.g., including prompt presentation conditions) to display a prompt 114for feedback for a first application 112 to the user. As discussedabove, the prompt presentation conditions may be based on the analysisof the interaction data 152 indicating (e.g., as determined by promptserver 130) that the user is interested in providing the feedback forthe application. In one implementation, the interaction data 152pertains to applications including the first application 112. In anotherimplementation, interaction data 152 pertains to applications other thanthe first application 112.

The prompt presentation conditions may include a level of impact (e.g.,size, frequency, ease of dismissing, timing, location) of displaying theprompt 114 based on the analysis of the interaction data 152 indicatingthe user's interest in providing feedback.

At block 404, the processing device displays the prompt 114 for feedbackfor the first application 112 to the user (e.g., based on the promptpresentation conditions). For example, the prompt presentationconditions may be provided to the first application 112, which thenpresents the prompt according to the prompt presentation conditions. Inanother implementation, the prompt presentation conditions may beprovided to the prompt manager 124, which then presents the promptaccording to the prompt presentation conditions.

The prompt presentation conditions may cause the prompt 114 to bedisplayed based on a determined level of impact. For example, as thenumber of ratings by the user, the number of shares by the user, thelevel of engagement of the user (e.g., hours using application, level onapplication, purchases on application, etc.) increase, the invasiveness(e.g., difficulty of dismissing), frequency of displaying, size, etc. ofthe prompt may also increase. The prompt 114 is discussed in more detailin regards to FIG. 5.

At block 406, the processing device receives a user response to theprompt. The user response may be, for example, a dismissal of theprompt, a ranking of the first application 112, a sharing of the firstapplication 112, a comment pertaining to the first application 112, etc.

At block 408, the processing device stores the user response to theprompt in a local data store.

At block 410, the processing device sends the user response (as part ofinteraction data) to the server (e.g., prompt server 130).

FIG. 5 is an example graphical interface 500 for a user device (e.g.,user device 120) that is displaying a prompt 114 (e.g., an interruptivedialog), in accordance with an implementation of the disclosure.

Referring to FIG. 5, a user device may display a user interface 500. Theprompt server 130 may identify an application 112 (e.g., the application112 shown in FIG. 5) for which feedback of a user of a user device isdesired. The user device of a user may have downloaded the application112 from the application distribution server 110. The prompt server 130may determine that the previous user interactions with applications(e.g., quantity of time using the application 112, quantity of ratingsor shares of applications, etc.) indicate that the user is interested inproviding the feedback for the applications. The prompt server 130 maytransmit instructions (e.g., prompt presentation conditions) to the userdevice to cause the user device to display the prompt 114 for feedbackfor the application 112. In one implementation, the prompt presentationconditions may cause the user device to display the prompt 114 duringthe operation of an application. In another implementation, the promptpresentation conditions may cause the user device to display the prompt114 while the user is accessing/searching an app store.

In one implementation, the prompt presentation conditions may include alevel of impact (e.g., when, how, how often, etc.) to be used to displaythe prompt 114. For example, the determined level of impact may definethe size of the prompt 114, a portion of the application 112 that can becovered by the prompt 114, the ease of dismissing the prompt 114, thefrequency that the prompt 114 is displayed, when the prompt 114 isdisplayed, etc. The previous user interactions of the user may indicatea level of interest in providing feedback for applications. If the levelof interest is below a first threshold level, the prompt server 130 maynot instruct the user device to display the prompt 114. If the level ofinterest meets the first threshold level, the prompt server 130 mayprovide prompt presentation conditions to cause the user device todisplay the prompt in a non-aggressive manner (e.g., low frequency,while the application is loading, after completing a level in theapplication, a small prompt, a prompt that does not block the operationof the application, etc.). If the level of interest meets a secondthreshold level that is higher than the first threshold level, theprompt server may provide prompt presentation conditions to cause theuser to display the prompt in an aggressive manner (e.g., frequently, alarger size of the prompt, during user interaction with otherapplications, blocking the operation of applications, etc.).

In one implementation, the user interface 500 displays a prompt 114 forrating an application 112. In another implementation, the prompt 114 isfor sharing the application 112. The application 112 may be shown behindthe prompt 114. The application 112 may be obscured (e.g., shaded). Theapplication 112 may show application text 502. The application text 502may indicate a process that the application 112 is currently undertaking(e.g., “Loading . . . ”). The prompt 114 may include prompt text 504(e.g., “If you like the application, please rate it. Thanks!”). Theprompt text 504 may invite the user to rate the application 112. Theprompt 114 may have one or more options of prompt input 506. In oneimplementation, a prompt input 506 a may request a rating (e.g., “Ratenow”). In one implementation, a prompt input 506 b may provide theoption to provide a rating at a later point in time (e.g., “Remind melater”). In one implementation, a prompt input 506 c may provide theoption of dismissing the prompt 114 (e.g., “No, thanks,” a close button,etc.).

In one implementation, upon selecting prompt input 506 a, the user maybe directed to rate the application 112 in conjunction with theapplication 112 (e.g., in-app rating). In one implementation, uponselecting prompt input 506 a, the user may be directed to theapplication distribution platform to rate the application 112 within theapplication distribution platform (e.g., in app store rating). Whetherprevious user interactions with one or more second applications indicatethat the user is interested in providing feedback for the one or moresecond applications (e.g., as determined by the prompt server 130) maydetermine whether the user is directed to rate the application 112 inconjunction with the application 112 (e.g., in-app rating) or within theapplication distribution platform (e.g., rating within the app store).

The interaction data 152 may rate interaction behavior of a user higherin response to the user being directed to the application distributionplatform from an application 112 (e.g., the user providing an in-apprating before rating the application 112 in the app store) than if theuser was not directed to the application distribution platform from anapplication (e.g., the user rating the application 112 in the app storewithout providing an in-app rating first). Application-referred ratingsmay be a better indication of whether previous user interactions withone or more second applications indicate that the user is interested inproviding feedback for the one or more second applications (e.g., abetter representation of the probability of positive interaction of theuser with a prompt 114 displayed in conjunction with an application 112,a user providing an app store rating after providing a correspondingin-app rating may be a better indicator of whether the user is likely toprovide an in-app rating for another application).

In one implementation, the interaction data 152 may rate interactionbehavior of a user higher in response to the user downloading anapplication 112 after the application 112 was shared with the user(e.g., a contact of the user sent a message sharing application 112 tothe user). If the contact of the user had positive enough of apreference for the application 112 to share the application 112 with theuser, the user may be more likely to rate the application 112 higher(e.g., the contact of the user and the user may have similarpreferences, the user may have a high preference for the application 112since the contact of the user has a high preference for the application112, etc.).

FIG. 6 is a block diagram illustrating one implementation of a computersystem, in accordance with an implementation of the disclosure. Incertain implementations, computer system 600 may be connected (e.g., viaa network, such as a Local Area Network (LAN), an intranet, an extranet,or the Internet) to other computer systems. Computer system 600 mayoperate in the capacity of a server or a client computer in aclient-server environment, or as a peer computer in a peer-to-peer ordistributed network environment. Computer system 600 may be provided bya personal computer (PC), a tablet PC, a set-top box (STB), a PersonalDigital Assistant (PDA), a cellular telephone, a web appliance, aserver, a network router, switch or bridge, or any device capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that device. Further, the term “computer” shallinclude any collection of computers that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methods described herein.

In a further aspect, the computer system 600 may include a processingdevice 602, a volatile memory 604 (e.g., random access memory (RAM)), anon-volatile memory 606 (e.g., read-only memory (ROM) orelectrically-erasable programmable ROM (EEPROM)), and a data storagedevice 616, which may communicate with each other via a bus 608.

Processing device 602 may be provided by one or more processors such asa general purpose processor (such as, for example, a complex instructionset computing (CISC) microprocessor, a reduced instruction set computing(RISC) microprocessor, a very long instruction word (VLIW)microprocessor, a microprocessor implementing other types of instructionsets, or a microprocessor implementing a combination of types ofinstruction sets) or a specialized processor (such as, for example, anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), or a networkprocessor).

Computer system 600 may further include a network interface device 622.Computer system 600 also may include a video display unit 610 (e.g., anLCD), an alphanumeric input device 612 (e.g., a keyboard), a cursorcontrol device 614 (e.g., a mouse), and a signal generation device 620.

Data storage device 616 may include a non-transitory computer-readablestorage medium 624 on which may store instructions 626 encoding any oneor more of the methods or functions described herein, includinginstructions encoding interaction component 134 of FIG. 2 and forimplementing methods 300 or 400.

Instructions 626 may also reside, completely or partially, withinvolatile memory 604 and/or within processing device 602 during executionthereof by computer system 600, hence, volatile memory 604 andprocessing device 602 may also constitute machine-readable storagemedia.

While computer-readable storage medium 624 is shown in the illustrativeexamples as a single medium, the term “computer-readable storage medium”shall include a single medium or multiple media (e.g., a centralized ordistributed database, and/or associated caches and servers) that storethe one or more sets of executable instructions. The term“computer-readable storage medium” shall also include any tangiblemedium that is capable of storing or encoding a set of instructions forexecution by a computer that cause the computer to perform any one ormore of the methods described herein. The term “computer-readablestorage medium” shall include, but not be limited to, solid-statememories, optical media, and magnetic media.

The methods, components, and features described herein may beimplemented by discrete hardware components or may be integrated in thefunctionality of other hardware components such as ASICS, FPGAs, DSPs orsimilar devices. In addition, the methods, components, and features maybe implemented by firmware modules or functional circuitry withinhardware devices. Further, the methods, components, and features may beimplemented in any combination of hardware devices and computer programcomponents, or in computer programs.

Unless specifically stated otherwise, terms such as “identifying,”“determining,” “receiving,” “causing,” “clustering,” “transmitting,”“displaying” or the like, refer to actions and processes performed orimplemented by computer systems that manipulates and transforms datarepresented as physical (electronic) quantities within the computersystem registers and memories into other data similarly represented asphysical quantities within the computer system memories or registers orother such information storage, transmission or display devices. Also,the terms “first,” “second,” “third,” “fourth,” etc. as used herein aremeant as labels to distinguish among different elements and may not havean ordinal meaning according to their numerical designation.

Examples described herein also relate to an apparatus for performing themethods described herein. This apparatus may be specially constructedfor performing the methods described herein, or it may include a generalpurpose computer system selectively programmed by a computer programstored in the computer system. Such a computer program may be stored ina computer-readable tangible storage medium.

The methods and illustrative examples described herein are notinherently related to any particular computer or other apparatus.Various general purpose systems may be used in accordance with theteachings described herein, or it may prove convenient to construct morespecialized apparatus to perform method 300, 400 and/or each of itsindividual functions, routines, subroutines, or operations. Examples ofthe structure for a variety of these systems are set forth in thedescription above.

The above description is intended to be illustrative, and notrestrictive. Although the present disclosure has been described withreferences to specific illustrative examples and implementations, itwill be recognized that the present disclosure is not limited to theexamples and implementations described. The scope of the disclosureshould be determined with reference to the following claims, along withthe full scope of equivalents to which the claims are entitled.

What is claimed is:
 1. A method comprising: identifying a firstapplication for which a feedback of a user of a user device is desired;identifying, by a processing device, previous user interactions with oneor more second applications, wherein the previous user interactionscomprise one or more positive interactions comprising at least one of:providing corresponding feedback that meets a threshold rating via acorresponding prompt to rate the one or more second applications;sharing at least one of the one or more second applications with one ormore users via the corresponding prompt; or a rating for the one or moresecond applications that does not meet the threshold rating and that hasan accompanying comment; and responsive to a quantity of positiveinteractions satisfying a threshold condition, causing the user deviceto display, to the user, a prompt for the feedback for the firstapplication.
 2. The method of claim 1, wherein the one or more secondapplications are different from the first application.
 3. The method ofclaim 1, wherein the one or more second applications comprise the firstapplication.
 4. The method of claim 1, wherein the prompt for thefeedback for the first application is a request to rate or share thefirst application.
 5. The method of claim 1, wherein: the previous userinteractions comprise one or more ratings, by the user via one or moreprompts, of the one or more second applications; and the causing of theuser device to display the prompt is further responsive to determining aquantity of the one or more ratings meets a corresponding thresholdquantity.
 6. The method of claim 1, wherein the causing of the userdevice to display the prompt is further responsive to determining that alevel of engagement of the user with the first application meets athreshold level.
 7. The method of claim 1, wherein the previous userinteractions comprise one or more ratings, by the user via one or moreprompts, of the one or more second applications, and wherein the causingof the user device to display the prompt is further responsive to:generating a combined score based on the one or more ratings and a levelof engagement of the user with the first application; and determiningthe combined score meets a threshold score.
 8. The method of claim 1,further comprising: receiving user information corresponding to aplurality of users comprising the user; and clustering, based on theuser information, a subset of the plurality of users comprising the userinto a first cluster, wherein: the previous user interactions comprise afirst median positive interaction rate of the first cluster; and thecausing of the user device to display the prompt is further responsiveto determining the first median positive interaction rate meets athreshold rate.
 9. The method of claim 1, further comprising determininga level of impact for displaying the prompt to the user based on theprevious user interactions, wherein: the level of impact comprises atleast one of invasiveness of the prompt, size of the prompt, or locationof the displaying of the prompt; and the causing the user device todisplay, to the user, the prompt is based on the level of impact.
 10. Anon-transitory machine-readable storage medium storing instructionswhich, when executed cause a processing device to perform operationscomprising: identifying a first application for which a feedback of auser of a user device is desired; identifying previous user interactionswith one or more second applications, wherein the previous userinteractions comprise one or more positive interactions comprising atleast one of: providing corresponding feedback that meets a thresholdrating via a corresponding prompt to rate the one or more secondapplications; sharing at least one of the one or more secondapplications with one or more users via the corresponding prompt; or arating for the one or more second applications that does not meet thethreshold rating and that has an accompanying comment; and responsive toa quantity of positive interactions satisfying a threshold condition,causing the user device to display, to the user, a prompt for thefeedback for the first application.
 11. The non-transitorymachine-readable storage medium of claim 10, wherein the one or moresecond applications are different from the first application.
 12. Thenon-transitory machine-readable storage medium of claim 10, wherein theone or more second applications comprise the first application.
 13. Thenon-transitory machine-readable storage medium of claim 10, wherein theprompt for the feedback for the first application is a request to rateor share the first application.
 14. The non-transitory machine-readablestorage medium of claim 10, wherein: the previous user interactionscomprise one or more ratings, by the user via one or more prompts, ofthe one or more second applications; and the causing of the user deviceto display the prompt is further responsive to determining a quantity ofthe one or more ratings meets a corresponding threshold quantity. 15.The non-transitory machine-readable storage medium of claim 10, whereinthe causing of the user device to display the prompt is furtherresponsive to determining that a level of engagement of the user withthe first application meets a threshold level.
 16. A system comprising:a memory; and a processing device, coupled to the memory, to: identify afirst application for which a feedback of a user of a user device isdesired; identify previous user interactions with one or more secondapplications, wherein the previous user interactions comprise one ormore positive interactions comprising at least one of: providingcorresponding feedback that meets a threshold rating via a correspondingprompt to rate the one or more second applications; sharing at least oneof the one or more second applications with one or more users via thecorresponding prompt; or a rating for the one or more secondapplications that does not meet the threshold rating and that has anaccompanying comment; and responsive to a quantity of positiveinteractions satisfying a threshold condition, cause the user device todisplay, to the user, a prompt for the feedback for the firstapplication.
 17. The system of claim 16, wherein the one or more secondapplications are different from the first application.
 18. The system ofclaim 16, wherein the one or more second applications comprise the firstapplication.
 19. The system of claim 16, wherein the prompt for thefeedback for the first application is a request to rate or share thefirst application.
 20. The system of claim 16, wherein: the previoususer interactions comprise one or more ratings, by the user via one ormore prompts, of the one or more second applications; and the processingdevice is to cause the user device to display the prompt furtherresponsive to determining a quantity of the one or more ratings meets acorresponding threshold quantity.